typedef unsigned int FILE;

//Prije pokretanja emulatora, potrbno je na hostu u terminalu (pod Linux-om) pokrenuti program srv.elf
//Nakon pokretanja srv.elf, u drugom terminalu treba pokrenuti emulator.
//Sve sto se cita u emulatoru treba unijeti u terminal u kojem je pokrenut srv.elf.
//Sve sto se ispisuje, bice ispisano u terminalu u kojem je pokrenut program srv.elf.

//sa standardnog ulaza cita jedan broj velicine bajta i pozivaocu vraca ucitani broj
unsigned char readb();

//na standardni izlaz ispisuje broj velicine bajta
void writeb(unsigned char b);

//sa standardnog ulaza cita cio broj velicine jedne rijeci
unsigned int readl();

//Na standardni izlaz ispisuje cio broj velicine rijeci
void writel(unsigned int l);

//Maksimalna duzina stringa koji se moze ucitati i ispisati koriscenjem sledece 3 funkcije je 255 B
//Sa standardnog ulaza cita jedan string koriscenjem scanf("%s"...)
void reads(char *b);

//Sa standardnog ulaza cita jednu liniju teksta koriscenjem gets(..)
void gets(char *b);

//Ispisuje jedan string na standardni izlaz
void writes(char *b);

//Na hostu otvara fajl sa zadatim nazivom. Mod u kojem se fajl otvara je "rb+".
//U slucaju uspjeha, funkcija vraca broj koji je veci od 0 i koji ce se u ostalim funkcijama koristiti kao
//rucka fajla (identifikacija otvorenog fajla.
FILE fopen(char *name);

//Na hostu otvara fajl sa zadatim nazivom. Mod u kojem se fajl otvara je "wb+".
//U slucaju uspjeha, funkcija vraca broj koji je veci od 0 i koji ce se u ostalim funkcijama koristiti kao
//rucka fajla (identifikacija otvorenog fajla.
FILE fcreate(char *name);

//pomjera tekucu poziciju za citanje i upis u fajlu koji se zadaje prvim argumentom na novu apsolutnu poziciju,
// zadatu drugim argumentom. U slucaju uspjesnog pozicioniranja, funkcija vraca 1.
//U slucaju da zadati fajl nije otvoren, vraca 0
unsigned int fseek(FILE file, unsigned int pos);

//Iz otvorenog fajla, zadatog prvim argumentom, cita blok potataka velicine zadate drugima argumentom i
//procitani blok vraca u baferu na koji pokayuje treci argument. Bafer mora biti dovoljne velicine da u njega 
//moze stati zadati broj bajtova. Maksimalna velicina bloka je 512B. Moze se desiti da funkcija ne uspije ili
//da djelimicno uspije. Zato funkcija kao rezultat vraca broj bajtova koji su procitani. Broj procitanih bajtova
//moze da bude manji od zadate velicine, ukoliko se pri citanju doslo do kraja fajla. U slucaju da fajl nije
//otvoren, funkcija vraca 0.
unsigned int fread(FILE file, unsigned int cnt, unsigned char *b );

//U otvoren fajl zadat kao prvi argument upisuje blok podataka na koji pokazuje treci argument i cija je velicina
//zadata drugim argumentom. Maksimalna velicina za upis fajla je 512B. Ukoliko blok ne moze da stane u fajl, fajl
//ce biti prosiren, tako da u njega moze stati citav blok koji se upisuje. Povratna vrijednost je broj bajtova koji
//su upisani. Ta vrijednost bi trebala bitu jedna od sledece dvije: 0 ili cnt. Funkcija vraca nulu u slucaju da
//fajl u koji se upisuje nije nadjen medju otvorenim fajlovima.
unsigned int fwrite(FILE file, unsigned int cnt, unsigned char *b);

//Zatvara fajl zadat prvim argumentom. Vraca 1 u slucaju uspjeha i 0 u slucaju da zadati fajl nije nadjen medju
//otvorenim fajlovima.
unsigned int fclose(unsigned int file);
